package cn.lingyangwl.agile.infra.weixin.mp.model.entity;

import cn.lingyangwl.agile.tenant.core.DataIsolation;
import cn.lingyangwl.agile.model.BasePlusPO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import me.chanjar.weixin.common.api.WxConsts;

import java.util.List;

/**
 * 公众号消息自动回复表
 *
 * @author shenguangyang
 */
@Getter
@Setter
@Accessors(chain = true)
@ApiModel(value="公众号消息自动回复")
@TableName(value = "wx_mp_auto_reply", autoResultMap = true)
@DataIsolation(filterTenant = true, tableName = "wx_mp_auto_reply")
public class MpAutoReply extends BasePlusPO {

	/**
	 * 主键
	 */
	@TableId
	@ApiModelProperty(value = "主键")
	private Long id;

	/**
	 * 公众号 appId
	 */
	@ApiModelProperty(value = "公众号 appId")
	private String mpAppId;

	/**
	 * 回复类型
	 */
	@ApiModelProperty(value = "回复类型")
	private Integer type;

	/**
	 * 请求的关键字
	 */
	@ApiModelProperty(value = "请求的关键字")
	private String requestKeyword;

	/**
	 * 请求的关键字的匹配
	 */
	@ApiModelProperty(value = "请求的关键字的匹配")
	private Integer requestMatch;

	/**
	 * 请求的消息类型
	 */
	@ApiModelProperty(value = "请求的消息类型")
	private String requestMessageType;

	/**
	 * 回复的消息类型
	 */
	@ApiModelProperty(value = "回复的消息类型")
	private String responseMessageType;

	/**
	 * 回复的消息内容
	 */
	@ApiModelProperty(value = "回复的消息内容")
	private String responseContent;

	/**
	 * 回复的媒体文件 id
	 */
	@ApiModelProperty(value = "回复的媒体文件 id")
	private String responseMediaId;

	/**
	 * 回复的媒体文件 URL
	 */
	@ApiModelProperty(value = "回复的媒体文件 URL")
	private String responseMediaUrl;

	/**
	 * 回复的标题
	 */
	@ApiModelProperty(value = "回复的标题")
	private String responseTitle;

	/**
	 * 回复的描述
	 */
	@ApiModelProperty(value = "回复的描述")
	private String responseDescription;

	/**
	 * 回复的缩略图的媒体 id
	 */
	@ApiModelProperty(value = "回复的缩略图的媒体 id")
	private String responseThumbMediaId;

	/**
	 * 回复的缩略图的媒体 URL
	 */
	@ApiModelProperty(value = "回复的缩略图的媒体 URL")
	private String responseThumbMediaUrl;

	/**
	 * 回复的图文消息
	 *
	 * 消息类型为 {@link WxConsts.XmlMsgType} 的 NEWS
	 */
	@TableField(typeHandler = MpMessage.ArticleTypeHandler.class)
	private List<MpMessage.Article> responseArticles;

	/**
	 * 回复的音乐链接
	 */
	@ApiModelProperty(value = "回复的音乐链接")
	private String responseMusicUrl;

	/**
	 * 回复的高质量音乐链接
	 */
	@ApiModelProperty(value = "回复的高质量音乐链接")
	private String responseHqMusicUrl;
	
	/**
	 * 是否删除
	 */
	private Boolean deleted;

    public static LambdaQueryWrapper<MpAutoReply> lqw() {
		return Wrappers.lambdaQuery();
	}
}
